package com.ruoyi.system.domain;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 桌台时长卡，记录桌台时长卡的基础信息、购买限制及适用范围对象 table_time_card
 *
 * @author ruoyi
 * @date 2025-05-22
 */
public class TableTimeCard extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自增主键ID，唯一标识每张桌台时长卡 */
    private Long id;

    /** 桌台时长卡名称（如“2小时欢唱卡”“全天棋牌卡”） */
    @Excel(name = "桌台时长卡名称", readConverterExp = "如=“2小时欢唱卡”“全天棋牌卡”")
    private String cardName;

    /** 桌台时长卡编号（唯一标识，如TTC20231001-001，支持业务系统集成） */
    @Excel(name = "桌台时长卡编号", readConverterExp = "唯=一标识，如TTC20231001-001，支持业务系统集成")
    private String cardCode;

    /** 单人购买限制类型（UNLIMITED=不限制，LIMITED_BY_COUNT=按张数限制） */
    @Excel(name = "单人购买限制类型", readConverterExp = "U=NLIMITED=不限制，LIMITED_BY_COUNT=按张数限制")
    private String singleUserPurchaseLimitType;

    /** 单人最多购买张数（当single_user_purchase_limit_type=LIMITED_BY_COUNT时生效） */
    @Excel(name = "单人最多购买张数", readConverterExp = "当=single_user_purchase_limit_type=LIMITED_BY_COUNT时生效")
    private Long singleUserMaxPurchaseCount;

    /** 总限购类型（UNLIMITED=不限制，LIMITED_BY_COUNT=按张数限购） */
    @Excel(name = "总限购类型", readConverterExp = "U=NLIMITED=不限制，LIMITED_BY_COUNT=按张数限购")
    private String totalPurchaseLimitType;

    /** 限购总张数（当total_purchase_limit_type=LIMITED_BY_COUNT时生效） */
    @Excel(name = "限购总张数", readConverterExp = "当=total_purchase_limit_type=LIMITED_BY_COUNT时生效")
    private Long totalMaxPurchaseCount;

    /** 参与桌台分类（JSON数组，记录适用桌台类型，如["全部", "一楼大厅", "包间"]） */
    @Excel(name = "参与桌台分类", readConverterExp = "J=SON数组，记录适用桌台类型")
    private String applicableTableCategories;

    /** 桌台时长卡描述（支持富文本或纯文本，说明使用规则、注意事项等） */
    @Excel(name = "桌台时长卡描述", readConverterExp = "支=持富文本或纯文本，说明使用规则、注意事项等")
    private String cardDescription;

    /** 在用状态（1=启用，0=禁用，控制卡是否可销售） */
    @Excel(name = "在用状态", readConverterExp = "1==启用，0=禁用，控制卡是否可销售")
    private Integer isActive;

    /** 逻辑删除标记（1=已删除，0=未删除，支持软删除） */
    @Excel(name = "逻辑删除标记", readConverterExp = "1==已删除，0=未删除，支持软删除")
    private Integer isDeleted;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setCardName(String cardName)
    {
        this.cardName = cardName;
    }

    public String getCardName()
    {
        return cardName;
    }

    public void setCardCode(String cardCode)
    {
        this.cardCode = cardCode;
    }

    public String getCardCode()
    {
        return cardCode;
    }

    public void setSingleUserPurchaseLimitType(String singleUserPurchaseLimitType)
    {
        this.singleUserPurchaseLimitType = singleUserPurchaseLimitType;
    }

    public String getSingleUserPurchaseLimitType()
    {
        return singleUserPurchaseLimitType;
    }

    public void setSingleUserMaxPurchaseCount(Long singleUserMaxPurchaseCount)
    {
        this.singleUserMaxPurchaseCount = singleUserMaxPurchaseCount;
    }

    public Long getSingleUserMaxPurchaseCount()
    {
        return singleUserMaxPurchaseCount;
    }

    public void setTotalPurchaseLimitType(String totalPurchaseLimitType)
    {
        this.totalPurchaseLimitType = totalPurchaseLimitType;
    }

    public String getTotalPurchaseLimitType()
    {
        return totalPurchaseLimitType;
    }

    public void setTotalMaxPurchaseCount(Long totalMaxPurchaseCount)
    {
        this.totalMaxPurchaseCount = totalMaxPurchaseCount;
    }

    public Long getTotalMaxPurchaseCount()
    {
        return totalMaxPurchaseCount;
    }

    public void setApplicableTableCategories(String applicableTableCategories)
    {
        this.applicableTableCategories = applicableTableCategories;
    }

    public String getApplicableTableCategories()
    {
        return applicableTableCategories;
    }

    public void setCardDescription(String cardDescription)
    {
        this.cardDescription = cardDescription;
    }

    public String getCardDescription()
    {
        return cardDescription;
    }

    public void setIsActive(Integer isActive)
    {
        this.isActive = isActive;
    }

    public Integer getIsActive()
    {
        return isActive;
    }

    public void setIsDeleted(Integer isDeleted)
    {
        this.isDeleted = isDeleted;
    }

    public Integer getIsDeleted()
    {
        return isDeleted;
    }

    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getPhone()
    {
        return phone;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("cardName", getCardName())
                .append("cardCode", getCardCode())
                .append("singleUserPurchaseLimitType", getSingleUserPurchaseLimitType())
                .append("singleUserMaxPurchaseCount", getSingleUserMaxPurchaseCount())
                .append("totalPurchaseLimitType", getTotalPurchaseLimitType())
                .append("totalMaxPurchaseCount", getTotalMaxPurchaseCount())
                .append("applicableTableCategories", getApplicableTableCategories())
                .append("cardDescription", getCardDescription())
                .append("isActive", getIsActive())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("isDeleted", getIsDeleted())
                .append("phone", getPhone())
                .toString();
    }
}
